package com.example.leetcode.hash;

import java.util.HashMap;
import java.util.Map;

/**
 * 两数之和
 */
public class TwoSum {

    /**
     * 使用hash表
     *
     * @param nums
     * @param target
     * @return
     */
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> table = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            // 目标值减当前数组值的结果，已经在hash表中存在了，说明找到两数之和了
            if (table.containsKey(target - nums[i])) {
                return new int[]{table.get(target - nums[i]), i};
            }

            // key是当前数组值，value是数组索引
            table.put(nums[i], i);
        }

        return new int[0];
    }
}
